"""
集合
- 使用大括号
- 最主要的特点是不支持元素重复（去重），并且内容无序，所以不支持下标访问，但是支持修改
- add
- remove
- pop
- clear
- difference
- difference_update
- len()
"""

# 定义集合
my_set = {"hello","world","you","name","hello","world"}  # 结果会去重，而且顺序也不保证
my_set_empty = set()  #定义空集合
print(f"my_set的内容是：{my_set},它的类型是：{type(my_set)}")
print(f"my_set的内容是：{my_set_empty},它的类型是：{type(my_set_empty)}")

# add(新元素),添加新元素
my_set.add("python")
my_set.add("hello")
print(f"my_set添加新元素后的结果是：{my_set}")

# remove(旧元素),移除元素
my_set.remove("hello")
print(f"my_set移除元素后的结果是：{my_set}")

# pop(),从集合随机去除元素
# pop() 是基于HashMap实现的，它总是「删除」集合中的「第一个元素」，
# 由于集合是「无序」的，所以它看起来就像是「随机」删除元素。
my_set.pop()
print(f"my_set随机移除元素后的结果是：{my_set}")

# clear(),清空集合
my_set.clear()
print(f"my_set清空元素后的结果是：{my_set}")

# 集合1.difference(集合2） 取出集合1和集合2的差集（集合1有而集合2没有的）
# 结果：得到一个新集合，集合1和集合2不变
set1 = {1,2,3}
set2 = {1,4,5}
set3 = set1.difference(set2)
set4 = set2.difference(set1)
print(f"集合1：{set1}")
print(f"集合2：{set2}")
print(f"集合3：{set3}")
print(f"集合4：{set4}")

# 集合1.difference_update(集合2) 在集合1内，删除和集合2相同的元素
# 结果：集合1被修改，集合2不变
set1 = {1,2,3}
set2 = {1,4,5}
print(f"修改前集合1：{set1}")
print(f"修改前集合2：{set2}")
set1.difference_update(set2)
print(f"消除后集合1：{set1}")
print(f"消除后集合2：{set2}")

# 集合1.union(集合2) 将集合1和集合2合成新集合
# 得到新集合，集合1和集合2不变
set1 = {1,2,3}
set2 = {1,4,5}
set3 = set1.union(set2)
print(f"集合1：{set1}")
print(f"集合2：{set2}")
print(f"得到新集合：{set3}")

# 统计集合的数量
set1 = {1,2,3,4}
count = len(set1)
print(f"集合里面元素的个数是{count}")

# 集合变量（不支持while循环）
set1 = {1,2,3,4,5}
for x in set1:
    print(x)


# 小练习：信息去重
my_list = ['南波万','石凯','南波万','石凯','No1','bird','No1','bird','fly']
my_set = set()
for x in my_list:
    my_set.add(x)
print(my_set)


